A sequencer is a controller to enable or disable a plurality of client units sequentially. That is, each client unit is powered up one at a time in a particular order. For example, client units may be power supplies in a system where each power supply is turned on in a power up sequence in a particular order of client unit enablement, i.e., in a permutation. Typically, the power down sequence is the inverse of the power up sequence. The power up sequence may include the transmission of an enable signal from the sequencer to each client unit and the reception of an acknowledgement (e.g. a power good signal) by the sequencer from each client unit. In addition, the power up sequence should maintain state, i.e., previously enabled client units should remain enabled as other client units are enabled in turn.
In conventional designs, the sequencer may be hard coded with specific logic to implement the power up sequence for a defined quantity of client units. Hard coding (e.g., in a programmable logic device, PLD) implies that changing the power up sequence may be difficult as the architecture changes over time. However, designs may require increased flexibility in sequencer operation by changing the permutation as client units are added, subtracted or swapped to the system. Thus, what is desired is a more generic and flexible sequencer architecture which is independent of the specific permutation desired.